package cn.quevo.cube.provide.data.validate.impl;

import cn.quevo.common.lang.JSONUtils;
import cn.quevo.common.lang.StringUtils;
import cn.quevo.cube.provide.data.entity.dto.ColumnValidateDto;
import cn.quevo.cube.provide.data.validate.AbstractColumnDataValidate;
import cn.quevo.cube.provide.data.validate.ColumnDataValidate;
import cn.quevo.cube.provide.exception.ColumnCheckException;
import cn.quevo.cube.provide.exception.response.ColumnExceptionResponse;

import java.util.Map;

/**
 * 多选验证
 *
 * @author July july_sky@foxmail.com
 * @version 1.0
 * @date 2018/12/14 6:28 PM
 * @Copyright 湘豫（北京）科技有限公司版权所有.All Rights Reserved.
 */
public class CheckBoxValidate extends AbstractColumnDataValidate implements ColumnDataValidate {

    @Override
    protected void checked(ColumnValidateDto columnValidateDto) {
        if (StringUtils.isBlank(columnValidateDto.getChoseValues())) {
            throw new ColumnCheckException(ColumnExceptionResponse.OPTION_NOT_EXISTS);
        }
        Map<String,Object> choses = JSONUtils.parse(columnValidateDto.getChoseValues(),Map.class);
        if (StringUtils.isEmpty(choses)) {
            throw new ColumnCheckException(ColumnExceptionResponse.OPTION_NOT_EXISTS);
        }
        String[] values = columnValidateDto.getValue().split(",");
        for (String value : values) {
            if (choses.get(value) != null) {
                return;
            }
        }
        throw new ColumnCheckException(ColumnExceptionResponse.OPTION_NOT_EXISTS);
    }
}
